package cn.jesin.css.service.impl;

import cn.hutool.core.util.StrUtil;
import cn.jesin.css.mapper.TagMapper;
import cn.jesin.css.service.TagService;
import cn.jesin.css.vo.Page;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 谷汉斌
 * @description
 * @createTime 2024/8/21 下午3:50
 */
@Service
public class TagServiceImpl implements TagService {

    @Resource
    private TagMapper tagMapper;

    /**
     * 分页获取所有标签
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param keyword  关键字
     */
    @Override
    public Page<Tag> getTags(int pageNum, int pageSize, String keyword) {
        // 页码小于1，默认为第一页
        if (pageNum < 1) {
            pageNum = 1;
        }
        pageNum = pageNum - 1;
        Map<String, Object> map = new HashMap<>();
        map.put("pageSize", pageSize);
        map.put("pageNum", pageNum);
        map.put("keyword", keyword);
        Page<Tag> page = new Page<>();
        List<Tag> tags = tagMapper.selectTags(map);
        int total = tagMapper.seletctTotal(map);
        page.setData(tags);
        page.setTotal(total);
        page.setPageNum(pageNum+1);
        page.setPageSize(pageSize);
        return page;
    }

    /**
     * 添加标签
     *
     * @param name 标签名称
     */
    @Override
    public boolean addTag(String name) {
        if (StrUtil.isBlank(name)) {
            return false;
        }
        return tagMapper.insertTag(name) > 0;
    }

    /**
     * 删除标签
     *
     * @param id 标签id
     */
    @Override
    public boolean deleteTag(Integer id) {
        if (id == null) {
            return false;
        }
        return tagMapper.deleteTag(id) > 0;
    }
}
